/**
 * 一些需要系统一开始就加载的初始化方法
 */


import store from "@/store";
import { checkUpgrade } from "@/utils/util";

export default {
  async onLoad() {
    try {
      if (getQueryString("noInit") == "1") return;

      // 给我立即获取设备信息
      store.commit("business/initDeviceId");

      // 外部token存储
      saveTokenByOuter();

      // 人脸初始化
      faceInit();

      // 打印机设备初始化
      store.dispatch("print/usbPrinterInit").then().catch();

      if (!store.getters.isLogin) return;

      // 更新商家信息
      updateBusiness();
    } catch (error) {
      console.error("mainInit Failed !", error);
    }
  },
  onLaunch() {
    checkUpgradeLogic();
  },
};

// 更新商家信息
const updateBusiness = async () => {
  // 获取当前用户的商家信息
  await store.dispatch("business/updateBusinessInfo");
};

// 存储外部token程序
const saveTokenByOuter = () => {
  // 判断当前url是否带有token参数
  const token = getQueryString("token");
  const returnPath = getQueryString("return");

  // console.log("tokxxxxen", token);
  if (token) {
    // 存储token
    store.commit("user/setToken", token);
    // 跳转到 returnPath
    uni.navigateTo({ url: returnPath });
  }
};

const getQueryString = (name: string) => {
  try {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    // console.log(" window.location.search", window.location);
    if (r != null) {
      return unescape(r[2]);
    }
    return null;
  } catch (error) {
    return null;
  }
};

// 检查应用更新
const checkUpgradeLogic = async () => {
  // #ifdef APP
  checkUpgrade(() => {}, true, false);
  // checkUpgrade({
  //   /** 应用类型 */
  //   appType: import.meta.env.VITE_APP_TYPE,
  //   /** 应用版本 */
  //   appEdition: 1 /* Android */,
  //   /** 自动开起更新弹窗 */
  //   autoShowPop: true,
  //   /** 没最新版时是否弹窗提醒已是最新版 */
  //   showIsNew: false,
  //   /** 自定义检查版本接口 */
  //   checkAppVersonApi: getAppDownloadinfoCheckAppVerson,
  // });
  // #endif
};

// 执行人脸定时任务

const faceInit = async () => {
  // 如果设备已激活，则执行初始化和人脸拉取任务，
  // 否则再判断是否存在激活码，如果存在则执行激活任务，否则不执行
  if (store.getters.isActivated) {
    // 初始化人脸SDK
    await store.dispatch("face/initFaceSDK");
    // 执行人脸拉取任务
    await store.dispatch("face/startFaceTimer");
  } else if (store.getters.getActivationCode) {
    // 初始化人脸设备激活码 并进行激活
    await store.dispatch("face/initActivationCode");

    // 初始化人脸SDK
    await store.dispatch("face/initFaceSDK");
    // 执行人脸拉取任务
    await store.dispatch("face/startFaceTimer");
  }
  // console.log("faceInit >", store.getters.isActivated, store.getters.getActivationCode);
};
